home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d1
/
eddtv4.arc
/
EDDT_MAC.LIB
< prev
next >
Wrap
Text File
|
1988-03-28
|
14KB
|
403 lines
CLS MACRO
;;
;; --------------------------------------------------------------------
;;
;; CLS - CLEAR SCREEN
;;
;; THIS MACRO WILL CLEAR THE SCREEN
;;
;; DESCRIPTION OF PARAMETERS
;;
;; NONE
;;
;; --------------------------------------------------------------------
;;
PUSHA ; SAVE GENERAL REGISTERS
;
MOV AL,00H ; SCROLL ENTIRE WINDOW
MOV CX,00H ; UPPER LEFT
MOV DX,184FH ; LOWER RIGHT
MOV BH,07H ; FILL ATTRIBUTE
MOV AH,06 ; VIDEO SCROLL ACTIVE PAGE
INT 10H ; BIOS VIDEO RUPT
;
POPA ; RESTORE GENERAL REGISTERS
ENDM ;
CMOS MACRO CMTYPE,BYTE,DATA ;; CMOS MACRO DEFINITION
;;
;; CMOS CONFIGURATION ACCESS MACRO
;;
IFNDEF CM_IO ; HAS THE PORT BEEN DEFINED ?
CM_IO EQU 071H ; DEFINE CMOS I/O PORT
ENDIF
IFNDEF CM_ADDR ; HAS THE PORT BEEN DEFINED ?
CM_ADDR EQU 070H ; DEFINE CMOS ADDRESSING PORT
ENDIF
;;
IFIDNI <CMTYPE>,<READ> ;; IS THIS A READ REQUEST ?
MOV AL,BYTE ; GET THE BYTE ADDRESS IN AL
OUT CM_ADDR,AL ; SEND ADDRESS TO CMOS PORT
JMP $+2 ; WAIT FOR DATA TO SETTLE ON BUS
JMP $+2 ; WAIT FOR DATA TO SETTLE ON BUS
IN AL,CM_IO ; READ THE REQUESTED DATA
;
EXITM ;; EXIT MACRO
ENDIF
;;
IFIDNI <CMTYPE>,<WRITE> ;; IS THIS A WRITE REQUEST ?
MOV AL,BYTE ; GET THE BYTE ADDRESS IN AL
OUT CM_ADDR,AL ; SEND ADDRESS TO CMOS PORT
JMP $+2 ; WAIT FOR DATA TO SETTLE ON BUS
JMP $+2 ; WAIT FOR DATA TO SETTLE ON BUS
IFNB <DATA>
MOV AL,DATA ; PUT DATA IN AL
ENDIF
OUT CM_IO,AL ; WRITE THE REQUESTED DATA
;
EXITM ;; EXIT MACRO
ENDIF
;;
;; ----- IF WE GET HERE THE TYPE WAS INVALID
;;
.LALL
.ERR
%OUT INVALID TYPE SPECIFIED IN CMOS MACRO > CMTYPE
;CMOS01...INVALID TYPE SPECIFIED FOR CMOS MACRO
.SALL
ENDM
CSRP MACRO FIELD
;;
;; --------------------------------------------------------------------
;;
;; CSRP - CURSOR POSITION
;;
;; THIS MACRO WILL POSITION THE CURSOR TO A LOCATION DEFINED
;; BY THE DFLD MACRO INSTRUCTION.
;;
;; DESCRIPTION OF PARAMETERS
;;
;; FIELD - THE LABEL OF THE FIELD TO BE OUTPUT
;;
;; --------------------------------------------------------------------
;;
;; ----- CHECK FOR REQUIRED OPERANDS
;;
IFB <FIELD> ; CHECK FOR FIELD PASSED
%OUT *CSRP - REQUIRED PARAMETER 'FIELD' UNDEFINED
.LALL
; ***** CSRP - REQUIRED PARAMETER 'FIELD' UNDEFINED
.XALL
.ERR
ENDIF
IFNB <FIELD>
PUSHA ; SAVE GENERAL REGISTERS
;
MOV AH,0FH ; REQUEST CURRENT VIDEO STATE
INT 10H ; BIOS VIDEO RUPT
;
; ----- BH NOW CONTAINS THE ACTIVE VIDEO PAGE
;
MOV DX,WORD PTR FIELD ; GET CURSOR POSITION
;
MOV AH,02H ; POSITION CURSOR FUNCTION
INT 10H ; BIOS VIDEO RUPT
;
POPA ; RESTORE GENERAL REGS
ENDIF
ENDM ;
DFLD MACRO ROW,COL,ATR,DATA
LOCAL LBL2 ; DEFINE LOCAL LABEL
;;
;; --------------------------------------------------------------------
;;
;; DFLD - DEFINE FIELD MACRO
;;
;; THIS MACRO WILL DEFINE AN OUTPUT FIELD TO BE WRITTEN
;; TO THE VIDEO DISPLAY. THE MACRO WILL GENERATE CONSTANTS
;; USED BY THE IO ROUTINES TO LOCATE THE DATA ON THE SCREEN
;; AND SET THE ATTRIBUTES.
;; THE RESULTING MEMORY CONSTANTS HAVE THE FOLLOWING FORMAT:
;;
;; DB COLUMN ; COLUMN TO START OUTPUT IN
;; DB ROW ; ROW TO START OUTPUT IN
;; DB ATR ; ATTRIBUTE BYTE FOR FIELD
;; DW LENGTH ; LENGTH OF DATA
;; DB 'DATA' ; DATA TO OUTPUT
;; DB 00H ; END OF MESSAGE INDICATOR
;;
;; DESCRIPTION OF PARAMETERS
;;
;; ROW - THE LINE ON THE DISPLAY FOR THE OUTPUT (1-25)
;;
;; COL - THE COLUMN ON THE DISPLAY FOR THE OUTPUT (1,80)
;;
;; ATR - THE DISPLAY ATTRIBUTE DESIRED FOR THE FIELD.
;;
;; DATA - THE ASCII CHARACTER STRING YOU WISH TO DISPLAY
;; IN THE FIELD. THIS PARAMETER MAY BE OMITTED
;; AND ONLY A POSITIONING SEQUENCE AND ATTRIBUTE
;; CHARACTER WILL BE GENERATED. IF SUPPLIED, DATA
;; MUST BE IN QUOTES.
;;
;; --------------------------------------------------------------------
;;
;; ----- CHECK FOR REQUIRED OPERANDS
;;
IFB <ROW> ; CHECK FOR ROW PASSED
%OUT *DFLD - REQUIRED PARAMETER 'ROW' UNDEFINED
.LALL
; ***** DFLD - REQUIRED PARAMETER 'ROW' UNDEFINED
.XALL
.ERR
ENDIF
;;
IFB <COL> ; CHECK FOR COL PASSED
%OUT *DFLD - REQUIRED PARAMETER 'COL' UNDEFINED
.LALL
; ***** DFLD - REQUIRED PARAMETER 'COL' UNDEFINED
.XALL
.ERR
ENDIF
;;
IFB <ATR> ; CHECK FOR ATR PASSED
%OUT *DFLD - REQUIRED PARAMETER 'ATR' UNDEFINED
.LALL
; ***** DFLD - REQUIRED PARAMETER 'ATR' UNDEFINED
.XALL
.ERR
ENDIF
;;
DB COL ; DEFINE COLUMN FOR DATA
DB ROW ; DEFINE ROW FOR DATA
DB ATR ; DEFINE ATTRIBUTE FOR DATA
IFNB <DATA> ; CHECK FOR DATA DEFINED
DW (LBL2-($+2)) ; LENGTH OF DATA TO WRITE
DB DATA
LBL2 EQU $ ; GET ADDRESS OF EOM
DB 00H ; END OF MESSAGE
ENDIF
ENDM
EDDT MACRO CYL,HD,WPC,CB,LZ,SEC ; TABLE ENTRY MACRO DEFINITION
;----------------------------------------------------------------------
; MACRO EDDT
;
; PURPOSE - DEFINE EDDT DRIVE TYPE TABLE ENTRIES
;
; USAGE - EDDT CYL,HD,WPC,CB,LZ,SEC
;
; DESCRIPTION OF PARAMETERS:
;
; CYL - NUMBER OF CYLINDERS (REQUIRED)
; HD - NUMBER OF HEADS (REQUIRED)
; WPC - STARTING WRITE PRECOMPENSATION CYLINDER (REQUIRED)
; CB - CONTROL BYTE VALUE
; LZ - LANDING ZONE
; SEC - SECTORS PER TRACK
;----------------------------------------------------------------------
;;
;; TABLE ENTRY FORMAT
;;
;; DW CYL ; NUMBER OF CYLINDERS
;; DB HD ; NUMBER OF HEADS
;; DW 00 ; NOT USED
;; DW WPC ; STARTING WRITE PRE-COMP CYLINDER
;; DB 00 ; NOT USED
;; DB CB ; CONTROL BYTE
;; ; BIT 3=1 MORE THAN 8 HEADS
;; ; 6=1 DISABLE RETRIES
;; ; 7=1 DISABLE RETRIES
;; DB 00,00,00 ; NOT USED
;; DW LZ ; LANDING ZONE
;; DB SEC ; SECTORS PER TRACK
;; DB 00 ; RESERVED
;;---------------------------------------------------------------------
;;
;; ----- FIRST CHECK FOR REQUIRED PARAMETERS CODED
;;
.ERRB <CYL> ; NUMBER OF CYLINDERS NO DEFINED
.ERRB <HD> ; NUMBER OF HEADS NOT DEFINED
.ERRB <WPC> ; STARTING WRITE PRE-COMPENSATION CYL NOT DEFINED
;;
;; ----- FIRST TIME INITIALIZE TYPE & START OF TABLE
;;
IFNDEF EDDTYPE ; IS TYPE DEFINED ??
EDDTYPE=0
;
ENDIF
IF2
EDDTYPE=EDDTYPE+1
ENDIF
EDMSG %EDDTYPE
.XALL
DW CYL ; NUMBER OF CYLINDERS
DB HD ; NUMBER OF HEADS
DW 0 ; NOT USED
;;
IFIDNI <WPC>,<NONE>
DW 0FFFFH ; NO WRITE PRECOMP
ENDIF
IFDIFI <WPC>,<NONE>
DW WPC ; STARTING WRITE PRECOMP CYL
ENDIF
;;
DB 0 ; NOT USED
;;
IFB <CB>
IF HD LE 8
DB 0 ; CONTROL BYTE
ENDIF
IF HD GT 8
DB 08H ; CONTROL BYTE
ENDIF
ENDIF
IFNB <CB>
DB CB ; CONTROL BYTE
ENDIF
;;
DB 0,0,0 ; NOT USED
IFNB <LZ>
DW LZ ; LANDING ZONE
ENDIF
IFB <LZ>
DW CYL ; LANDING ZONE
ENDIF
IFNB <SEC>
DB SEC ; SECTORS/TRACK
ENDIF
;;
IFB <SEC>
DB 17D ; SECTORS/TRACK
ENDIF
;;
DB 0 ; RESERVED
ENDM
EDMSG MACRO NUM
IF2
.LALL
%OUT -------------------------------------------------------
%OUT EDDT - TABLE ENTRY DEFINITION FOR DRIVE TYPE NUM
%OUT -------------------------------------------------------
.XALL
ENDIF
ENDM
PAUSE MACRO
;;
;; --------------------------------------------------------------------
;;
;; PAUSE - PAUSE TO LET OPERATOR READ THE SCREEN
;;
;; THIS MACRO WILL GENERATE INTERRUPT 15 FUNCTION 86H WHICH
;; WILL WAIT THE TASK FOR AN INTERVAL
;;
;; DESCRIPTION OF PARAMETERS
;;
;; NONE
;;
;; --------------------------------------------------------------------
;;
PUSH CX ; SAVE CX REGISTER
PUSH DX ; SAVE DX REGISTER
;
MOV CX,01H ; WAIT TIME
MOV DX,00H ; INTERVAL VALUE
MOV AH,86H ; WAIT FUNCTION
INT 15H ; BIOS RUPT
;
POP DX ; RESTORE DX REGISTER
POP CX ; RESTORE CX REGISTER
ENDM ;
READK MACRO BFR
;;
;; --------------------------------------------------------------------
;;
;; READK - READ KEYBOARD
;;
;; THIS MACRO WILL READ FROM THE KEY BOARD. THE ASCII
;; CHARACTERS READ ARE PLACED IN THE INPUT BUFFER.
;;
;; DESCRIPTION OF PARAMETERS
;;
;; BFR - INPUT BUFFER AS DEFINED BY DOS FUNCTION 0AH
;;
;; --------------------------------------------------------------------
;;
;; ----- CHECK FOR REQUIRED OPERANDS
;;
IFB <BFR> ; CHECK FOR BFR PASSED
%OUT *READK - REQUIRED PARAMETER 'BFR' UNDEFINED
.LALL
; ***** READK - REQUIRED PARAMETER 'BFR' UNDEFINED
.XALL
.ERR
ENDIF
PUSH DX ; SAVE DX REGISTER
LEA DX,BFR ; GET BUFFER ADDRESS
MOV AL,0AH ; BUFFERED KEYBOARD INPUT FUNCTION
MOV AH,0CH ; CLEAR BUFFER & READ STRING
INT 21H ; DOS FUNCTION RUPT
POP DX
ENDM ;
WCS MACRO FIELD,ATR,RCS,PAGE
;;
;; --------------------------------------------------------------------
;;
;; WCS - WRITE CHARACTER STRING
;;
;; THIS MACRO WILL OUTPUT A CHARACTER STRING DEFINED BY
;; THE DFLD MACRO INSTRUCTION.
;;
;; DESCRIPTION OF PARAMETERS
;;
;; FIELD - THE LABEL OF THE FIELD TO BE OUTPUT
;; ATR - THE ATTRIBUTE BYTE FOR THE FIELD
;; IF OMITTED, THE PRE-DEFINED ATTRIBUTE
;; FROM THE DFLD MACRO IS USED
;; RCS - IF RCS IS CODED EQUAL TO CS, THEN THE VALUE
;; FO THE ES REG IS TAKEN FROM THE CS REG, NOT
;; THE DS REG
;;
;; --------------------------------------------------------------------
;;
;; ----- CHECK FOR REQUIRED OPERANDS
;;
IFB <FIELD> ; CHECK FOR FIELD PASSED
%OUT *WCS - REQUIRED PARAMETER 'FIELD' UNDEFINED
.LALL
; ***** WCS - REQUIRED PARAMETER 'FIELD' UNDEFINED
.XALL
.ERR
ENDIF
IFNB <FIELD>
PUSHA ; SAVE GENERAL REGISTERS
PUSH ES ; SAVE ES REGISTER
IFDIFI <RCS>,<CS>
PUSH DS ; DS TO STACK
ENDIF
IFIDNI <RCS>,<CS>
PUSH CS ; DS TO STACK
ENDIF
POP ES ; ES OFF THE STACK
LEA BP,FIELD+5 ; ADDRESS OF FIELD
MOV DX,WORD PTR FIELD ; GET CURSOR POSITION
MOV CX,WORD PTR FIELD+3 ; GET LENGTH OF STRING
IFB <ATR>
MOV BL,BYTE PTR FIELD+2 ; GET ATTRIBUTE BYTE
ENDIF
IFNB <ATR>
MOV BL,ATR ; GET ATTRIBUTE BYTE
ENDIF
;
IFB <PAGE>
MOV BH,00H ; SELECT PAGE 0
ENDIF
IFNB <PAGE>
MOV BH,PAGE ; SELECT PAGE
ENDIF
MOV AX,1301H ; WRITE STRING & MOVE CURSOR
INT 10H ; BIOS VIDEO RUPT
;
POP ES ; RESTORE ES REGISTER
POPA ; RESTORE GENERAL REGS
ENDIF
ENDM ;